"""
函数的多返回值
"""


#演示多个返回值
def test_return():
    return 1, "hello",True
x,y,z = test_return ()

print(x)
print(y)
print(z)


"""
函数传参
"""

def user_info(name,age,gender):
    print(f"姓名是：{name},年龄是{age},性别是{gender}")
#   1.位置传参
user_info("小明",20,"男")
#   2.关键字传参  ”键=值“
user_info(name = "小王",age =21, gender = "男")   #可以不按顺序传参
user_info(age= 19,gender = "女",name = "潇潇")

#  3.缺省参数  ，默认值必须在最后
def user_info(name,age,gender = '女'):
    print(f"姓名是：{name},年龄是{age},性别是{gender}")
user_info("小美", 21)


#  不定长传参 位置传递和关键字传递
def user_info(*args):
     print(*args)
user_info('tom')           #结果为元组
user_info('tom',18)


def user_info(**kwargs):  #参数为  键=值 形式
    print(kwargs)         #结果为字典
user_info(name = 'tom',age =18)

"""
函数作为参数传参
"""
def test_func(compute):
    result = compute(5,7)
    print(f"compute参数类型：{type(compute)}")
    print(f"计算结果：{result}")

def compute(x,y):
    return x+y
test_func(compute)

#匿名函数 lambda
def test_func(compute):
    result = compute(5,7)
    print(f"compute参数类型：{type(compute)}")
    print(f"计算结果：{result}")

test_func(lambda x,y:x+y)   #无法写多行,并且只能用一次